/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xos_http.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#include "../import/head.h"
#include "../helper_objs/head.h"
#include "../data_struct/head.h"
#include "../config/head.h"
#include "../macro/head.h"
#include "../impl/head.h"
#include "../msg/head.h"
#include "msg_slow.h"

namespace xos_http
{

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 

    msg_slow::msg_slow()
    {
    }

    msg_slow::~msg_slow()
    {
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // 
    // proc
    // 
    int msg_slow::proc( xos_box::i_msg *& pMsg )
    {
        int ret = 1;

        int nMsg = pMsg->get_msg();

        switch( nMsg )
        {
            case SLOW_JOB:
                {
                    slow_job( pMsg );
                }
                break;
            default:
                {
                    ret = 0;
                }
                break;
        }

        return ret;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 

    int msg_slow::slow_job( xos_box::i_msg *& pMsg )
    {
        int ret = 0;
        http::i_servlet::enumRet eRet = http::i_servlet::RET_DONE;
        task::T * pTask = (task::T *)pMsg->get_void( 0, 0 );
        http::i_servlet * pServlet = pTask->m_pServlet;
        {
            eRet = pServlet->proc( pTask );
        }
        {
            pTask->m_eState = task::STATE_DONE;
            pMsg->set_int( 0, eRet );
            pTask->get_connect()->fast_notify()->notify( pMsg, FAST_JOB );
        }
        return ret;
    }

} // xos_http
